hysop.backend.device.codegen.kernels.custom_symbolic module

class hysop.backend.device.codegen.kernels.custom_symbolic.CustomSymbolicKernelGenerator(typegen, expr_info, ftype, kernel_dim, work_dim, granularity, vectorization, itype='int', use_short_circuit=None, symbolic_mode=False, debug_mode=False, tuning_mode=False, known_vars=None)[source]

Bases: KernelCodeGenerator

abstract build_expr_requirements(csc, kernel_reqs, kernel_args)[source]

Generate requirements and generate new expressions.

build_requirements(csc)[source]
classmethod codegen_name(work_dim, array_dim, kernel_dim, granularity, ftype, vectorization, name, direction)[source]
compute()[source]
classmethod create(expr_info, **kwds)[source]

Kernel generator factory that handles different expression types.

abstract custom_name()[source]
fmt_counter(count)[source]
gen_kernel_arguments(csc, kernel_reqs)[source]
gencode()[source]
abstract generate_expr_code()[source]
load_data(event, local_id)[source]
required_workgroup_cache_size(local_work_size)[source]

Return a tuple of required (static,dynamic,total) cache bytes per workgroup

store_data(event, local_id)[source]
class hysop.backend.device.codegen.kernels.custom_symbolic.SymbolicCodegenContext(typegen, expr_info, ftype, itype, vectorization, granularity, kernel_dim, use_short_circuit, work_dim, known_vars, tuning_mode, debug_mode, symbolic_mode)[source]

Bases: object

Store all information required to generate custom code.

array_ghost(varname, index=None)[source]
array_size(varname, index=None)[source]
compute_work_per_step()[source]
generate_args()[source]
generate_array_args()[source]
generate_common_args()[source]
generate_field_args()[source]
generate_param_args()[source]
generate_scalar_args()[source]